<?php
/**
 * 作者：牛哄哄
 * Q Q : 455703030
 */

//读取远程文件，$minLen可设置远程文件长度的最小值，文件长度小于此值则返回false
function remoteData($url,$minLen=0)
{
    $remoteData = file_get_contents($url);
    return strlen($remoteData) > $minLen ? $remoteData : false;
}

//采集$set设置的数据，$set可为数组，此时函数返回的数组的结构与$set相同
function ugs($data,$set)
{
    if (is_string($set)) {

      return preg_match_all($set,$data,$result) ? (count($result[0])>1?$result[0]:$result[0][0]) : false;
    }

    foreach ($set as $key => $value) {
        $result[$key] = ugs(&$data,&$value);
    }

    return $result;
}

//参数同下面的pregReplace函数，此函数使用str_replace进行替换
function strReplace($data,$from,$to='')
{
    if (is_string($data)) {
        return str_replace($from,$to,$data);
    }

    foreach ($data as $key => $value) {
        $result[$key] = strReplace(&$value,&$from,&$to);
    }

    return $result;
}

//$from参数可为数组，若需要替换为新的内容，则$to也为数组，并与$from一一对应
function pregReplace($data,$from,$to='')
{
    if (is_string($data)) {
        return preg_replace($from,$to,$data);
    }

    foreach ($data as $key => $value) {
        $result[$key] = pregReplace(&$value,&$from,&$to);
    }

    return $result;
}

//$url 参数为正在采集的页面的URL，图片的路径如果不带域名，将会从此URL中截取补充进去
function imgRealPath($data,$url)
{
    if (preg_match_all('/<img[^<>]*src=[\'"]?([^\s\'"<>]+)/i',$data,$result))
    {
        if ('http://' == strtolower(substr($result[1][0],0,7))) {
            return $data;
        }

        if ('/' == substr($result[1][0],0,1)) {
            $imgPath = substr($url,0,strpos($url,'/',10));
        } else {
            $imgPath = substr($url,0,strrpos($url,'/')+1);
        }

        foreach ($result[1] as $value) {
            $imgRealPath[] = $imgPath.$value;
        }

        $data = str_replace($result[1],$imgRealPath,$data);
    }
    return $data;
}

//$localDir参数为相对于根目录的路径，路径前带/符号，路径后不带
function imgLocal($data,$localDir)
{
    if (preg_match_all('/<img[^<>]*src=[\'"]?([^\s\'"<>]+)/i',$data,$result))
    {
        $imgDir = makeDir(realpath('./').$localDir);

        foreach ($result[1] as $value) {
            $imgName = time().'-'.substr($value,strrpos($value,'/')+1);
            file_put_contents($imgDir.'/'.$imgName,file_get_contents($value));
            $localImg[] = $localDir.'/'.$imgName;
        }

        $data = str_replace($result[1],$localImg,$data);
    }
    return $data;
}

//创建图片的本地目录，为 年/月/日/小时
function makeDir($localDir)
{
    $timeDir = explode('-',date('Y-m-d-H',time()));

    foreach ($timeDir as $value) {
        $localDir .= '/'.$value;
        is_dir($localDir) || mkdir($localDir);
    }

    return $localDir;
}

//转换编码，$data为需要进行编码转换的字串或数组，$from为$data的编码，$to为转换后的编码
function resetEncode($data,$from,$to)
{
    if (is_string($data)) {
        return iconv($from,$to,$data);
    }

    foreach ($data as $key => $value) {
        $result[$key] = resetEncode(&$value,&$from,&$to);
    }

    return $result;
}
?>